#ifndef COMPONENTE_H_
#define COMPONENTE_H_

class Bytes;

#include "../Constantes.h"


#include<string>
using namespace std;

/*
 * Funcion: Clase abstracta de la que heredan los tipos de componentes.
 */
class Componente {

public:

	/*
	 * Pre: -
	 * Pos: Crea una nueva instancia.
	 */
	Componente();

	/*
	 * Pre: -
	 * Pos: Devuelve bytes con el dato serializado.
	 */
	virtual Bytes serializarse() = 0;

	/*
	 * Pre: -
	 * Pos: Hidrata el estado del Componente.
	 */
	virtual void hidratarse(const Bytes& bytes) = 0;

	/*
	 * Pre: -
	 * Pos: devuelve el tamanio del componente serializado.
	 */
	virtual cantBytes getTamanioSerializado() = 0;

	/*
	 * Pre: -
	 * Pos: Libera los recursos instanciados.
	 */
	virtual ~Componente();
};

#endif /* COMPONENTE_H_ */
